/**
 * @author Manoj
 * HtmlParseMain.java
 * Modified by Hemant
 */


/*
*Released on 28th June 2008.
*Any violations can be reported at paritosh@wikiocean.net
*What is treated as violations can be found at www.wikiocean.net/ppl1-voilations*
******************************************************************************
* The contents of this file are subject to POOL Public License 1.0 and later.
* POOL Public License is based on Affero GPL v3 and additional conditions.
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the Affero GPL v3 License at http://www.gnu.org/licenses/agpl.html
* You may obtain a copy of the POOL Public License 1.0 or later at www.wikiocean.net/license/ppl.html
* Software distributed under POOL Public License 1.0 is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Initial Developer of the Original Code is Paritosh Pungaliya (C) 2008. All Rights Reserved.
******************************************************************************
* Objective of the additional terms (license)
* 1) Is to extend the software freedom to freedom to work.
* 2) To ensure that knowledge is free from monopoly of agencies.
* 3) To avoid a situation where big corporate or investor can buy out free software groups and companies and then start milking the communities built around it.
* (this trend can be seen how the freedom is curtailed in companies that get Venture Capital funding.)
******************************************************************************
*/

package  guiregistration;

import guireportgenerator.WebReportGenerator;

import java.io.*;
import java.util.Hashtable;

import dbmanager.DBManager;
import dbmanager.GetIdName;
import guiparser.*;
import guiparser.parser.*;

public class HtmlParseMain
{
	Reader r;
	String path;
	File HTMLFile;
	static public String NewFile;
	GetIdName get;
	HTMLParseLister htmlparseLister;
	byte[] html ;
	HTMLEditorKit.Parser parser;
	public static String report = "";
	public String username="",password="";
	
	/**
	 * Parametarized constructor accepting path  for HTML file
	 */
	public HtmlParseMain(String path) 
	{
		get = new GetIdName();
		
		try
		{					
            HTMLFile = new File (path);
            
            try
            {
                html = new byte[new Long(HTMLFile.length()).intValue()];
                FileInputStream fis = new  FileInputStream(HTMLFile);           
                fis.read(html);
            }
            catch(FileNotFoundException e)
            {
                html = path.getBytes();
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
	}
	
	public HtmlParseMain(String report, String path) 
	{
		HtmlParseMain.report = report;
		get = new GetIdName();
		
		try
		{
			int length = path.split("//").length-1;			
			NewFile = path.split("//")[length].replace('.', '/').split("/")[0];
			System.out.println("New File       "+NewFile);
			
            HTMLFile = new File (path);
            
            try
            {
                html = new byte[new Long(HTMLFile.length()).intValue()];
                FileInputStream fis = new  FileInputStream(HTMLFile);           
                fis.read(html);
            }
            catch(FileNotFoundException e)
            {
                html = path.getBytes();
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
	
    public void setUsername(String username)
    {
        this.username = username;
    }
    
    public void setPassword(String password)
    {
        this.password = password;
    }
    
	public void parse()
	{
        try
        {
	         ByteArrayInputStream ba_read = new ByteArrayInputStream(html);
	         r = new InputStreamReader(ba_read);
	         
	         parser = new ParserDelegator();
	         
	         // Object Of class Which Is Used To  Parse The HTML File  Input
	         // Given in Reader 
	         
	         htmlparseLister = new HTMLParseLister();
	         
	         //parse method Parses The HTML with overideen Mehods of class HTMLEditorKit.ParserCallback
	         parser.parse(r,htmlparseLister , true);	         
	         
	         /* Method is called Here To make The MasterCommands With Two Hash Table
	      		1.Html_Parent
	      		2.HtmlTag_Properties
	  		*/
	         GenerateMasterCommand gen =new GenerateMasterCommand(HTMLParseLister.start_tag,htmlparseLister.getHash());
	    	 gen.register();
	    	 
	         /*if(report.trim().equals(""))
	         {
	    	 	gen.register();
	         }
	         else
	         {
	    	 	gen.update();
	         }*/
	          
	         r.close();
        }
        catch (IOException e) 
        {
        	e.printStackTrace();
        }
        finally
        {
            String reportid = get.getId(htmlparseLister.start_tag);
            WebReportGenerator web = new WebReportGenerator(reportid, new Hashtable<Object, Object>(),".html");
            web.getData();
            //db.closeConnection();
        }
	}
	
	public static void main(String[] args)
    {
		//new HtmlParseMain("//home//hemant//TextFiles//GeneratedFiles//Result.html");
		//HtmlParseMain htmlparse = new HtmlParseMain("//home//hemant//Report.html", db);
		HtmlParseMain htmlparse = new HtmlParseMain("//home//wiki//webworkspace//PoolWeb//WebContent//Storage.html");
		htmlparse.setPassword("system");
		htmlparse.setUsername("systemuser");
		htmlparse.parse();
    }
}
